package cn.demoncat.util.ftp;

import cn.demoncat.util.conn.ConnPool;
import cn.demoncat.util.conn.ConnPoolFactory;
import cn.demoncat.util.conn.ConnTask;
import cn.demoncat.util.ftp.config.FtpProperties;
import cn.demoncat.util.io.config.ImgProperties;
import cn.demoncat.util.web.config.AppProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * FTP工具类 - 连接池版
 * 
 * @author 延晓磊
 *
 * @since 2019年11月6日
 */
@Component("ftpPoolUtil")
public class FtpPoolUtil extends FtpUtil{

	// FTP 连接池
	private final ConnPool<FtpConn> pool;

	/**
	 * 初始化FTP工具
	 */
	@Autowired
	public FtpPoolUtil(FtpProperties ftpProperties, ImgProperties imgProperties, AppProperties appProperties) {
		super(ftpProperties, imgProperties, appProperties);
		// FTP 连接池
		pool = new ConnPool<>(new ConnPoolFactory<>(FtpConn.class, ftpProperties), ftpProperties);
	}
  
	/**
	 * 获取连接 - 执行任务 - 关闭连接
	 * 
	 * @param task	连接任务
	 * @return
	 * 
	 * @author 延晓磊
	 *
	 * @since 2019年11月4日
	 */
	@Override
	public <R>R execute(ConnTask<FtpConn,R> task) {
		return pool.execute(task);
	}

}
